package subraSoft.fenix.gui.reparaciones;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.Document;

import org.netbeans.validation.api.Validator;
import org.netbeans.validation.api.builtin.Validators;

import subraSoft.centaurus.gui.option.amb.CenABMSaveOrUpdateDialog;
import subraSoft.centaurus.gui.validators.impl.CenPositiveLongValidator;
import subraSoft.centaurus.model.cobj.CenDefaultCObj;
import subraSoft.fenix.gui.reparaciones.modificacion.FenClienteChooserController;
import subraSoft.fenix.model.cliente.cobj.FenClienteCObj;
import subraSoft.fenix.model.reparacion.cobj.FenReparacionCObj;

public class FenReparacionesSaveOrUpdateDialog extends CenABMSaveOrUpdateDialog implements ActionListener 
{
	private static final long serialVersionUID = 1L;

	private JTextField idTfl, equipoTfl, serieTfl, marcaTfl, accesoriosTfl, precioTfl;
	private JTextArea pedidoTxa, observacionesTxa;
	private FenClienteChooserController clienteChooser;

	public FenReparacionesSaveOrUpdateDialog(FenReparacionCObj reparacion)
	{
		super("Edicion Reparacion", reparacion);
	}

	@SuppressWarnings("unchecked")
	@Override
	protected void createPanel()
	{
		// CREACION DE COMPONENTES
		idTfl = new JTextField(20);
		idTfl.setEnabled(false);
		equipoTfl = new JTextField(20);
		serieTfl = new JTextField(20);
		marcaTfl = new JTextField(20);
		accesoriosTfl = new JTextField(20);
		precioTfl = new JTextField(20);
		clienteChooser = new FenClienteChooserController();	
		pedidoTxa = new JTextArea(3,6);
		observacionesTxa = new JTextArea(3,6);
		
		// LAYOUT
		setLayout( new GridBagLayout() );
		GridBagConstraints c = new GridBagConstraints();
		c.insets = new Insets(10,10,10,10);
		c.anchor = GridBagConstraints.WEST;
		c.fill = GridBagConstraints.HORIZONTAL;
		c.weightx = 100;
		
		// UBICACION Y LABELS
	    int fila = 0;
	    int col = 0;
	    { // FILA 1
	    	c.gridy = fila++;
			
	    	//
	    	c.gridx = col++;
			add(new JLabel("Id"), c);
			
			idTfl.setName("Id");
			c.gridx = col++;
			add(idTfl, c);
			
			//
	    	c.gridx = col++;
			add(new JLabel("Cliente"), c);
			
			clienteChooser.setName("Cliente");
			c.gridx = col++;
			add(clienteChooser, c);
			
			//
			c.gridx = col++;
			add(new JLabel("Equipo"), c);
			
			equipoTfl.setName("Equipo");
			c.gridx = col++;
			add(equipoTfl, c);

	    }
		
	    col = 0;
	    { // FILA 2
	    	c.gridy = fila++;
	    	
	    	//
			c.gridx = col++;
			add(new JLabel("Serie"), c);
			
			serieTfl.setName("Serie");
			c.gridx = col++;
			add(serieTfl, c);
			
			//
			c.gridx = col++;
			add(new JLabel("Marca"), c);
			
			marcaTfl.setName("Marca");
			c.gridx = col++;
			add(marcaTfl, c);
			
			//
			c.gridx = col++;
			add(new JLabel("Accesorios"), c);
			
			accesoriosTfl.setName("Accesorios");
			c.gridx = col++;
			add(accesoriosTfl, c);
	    }
	    
	    col = 0;
	    { // FILA 3
	    	c.gridy = fila++;
			
			//
			c.gridx = col++;
			add(new JLabel("Precio"), c);
			
			precioTfl.setName("Precio");
			c.gridx = col++;
			add(precioTfl, c);
	    }
	    
	    col = 0;
	    { // FILA 4
	    	c.gridy = fila++;
	    	
	    	c.gridx = col;
	    	add(new JLabel("Pedido"), c);
	    	c.gridy = fila++;
	    	c.gridwidth = 6;
	    	c.gridx = col++;
	    	add(new JScrollPane(pedidoTxa), c);
	    	c.gridwidth = 1;
	    }
	    
	    col = 0;
	    { // FILA 5
	    	c.gridy = fila++;
	    	
	    	c.gridx = col;
	    	add(new JLabel("Observaciones"), c);
	    	c.gridy = fila++;
	    	c.gridwidth = 6;
	    	add(new JScrollPane(observacionesTxa), c);
	    	c.gridwidth = 1;
	    }

		// VALIDACIONES DINAMICAS
	    Validator<Document> d = Validators.forDocument(true,
	            Validators.REQUIRE_NON_EMPTY_STRING);
	    getValidationGroup().add(equipoTfl, d);
	    
	    pedidoTxa.setName("Pedido");
	    getValidationGroup().add(pedidoTxa, d);

	    clienteChooser.getValidationComponent().setName("Cliente");
	    getValidationGroup().add(clienteChooser.getValidationComponent(), d);
	    
	    precioTfl.setName("Precio");
	    getValidationGroup().add(precioTfl, new CenPositiveLongValidator());
	}

	@Override
	protected String validar() 
	{
		return null;
	}

	@Override
	protected void fillComponents(CenDefaultCObj cobj) 
	{
		// NO SE USA PARA EDICION
	}

	@Override
	public CenDefaultCObj getCObj()
	{
		FenReparacionCObj reparacion = new FenReparacionCObj();
		if(idTfl.getText() != null && !idTfl.getText().equals(""))
			reparacion.setId(Long.parseLong(idTfl.getText()));
		reparacion.setAccesorios(accesoriosTfl.getText());
		reparacion.setEquipo(equipoTfl.getText());
		reparacion.setFechaCreacion(new Date()); // DIA DE HOY
		reparacion.setMarca(marcaTfl.getText());
		reparacion.setObservaciones(observacionesTxa.getText());
		reparacion.setPedido(pedidoTxa.getText());
		if(precioTfl.getText() != null && !precioTfl.getText().equals(""))
			reparacion.setId(Long.parseLong(precioTfl.getText()));
		reparacion.setSerie(serieTfl.getText());
		FenClienteCObj cli = (FenClienteCObj) clienteChooser.getSelectedItem();
		reparacion.setIdCliente(cli.getId());
		
		return reparacion;
	}
} 
